Providing search suggestions from user selected data sources for an input string

ABSTRACT

Provided are a computer program product for generating suggestions for an input string. A determination is made of strings in a user selected data source having at least a substring matching an input string, from a computer implemented user interface, comprising at least one character for use by a computer implemented process. The determined strings are provided to the user interface and selection is received of one of the determined strings from the user interface to provide to the computer implemented process.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a computer program product, system, andmethod for providing search suggestions from user selected data sourcesfor an input string.

2. Description of the Related Art

When a user enters characters for an input string for purposes such as asearch, the computer program may provide the user a completed searchstring from a dictionary or other source to auto-complete the string theuser is entering. For instance, when a user enters a search string in asearch box on a web page, such as the GOOGLE® search box at the GOOGLE®web site, the GOOGLE® search engine may display to the user searchsuggestions to complete the search string. The suggestions GOOGLE®provides may be based on popular searches performed by other users.Other programs, such as word processing programs, email and text messageprograms may provide auto-complete suggestions based on a dictionary.(GOOGLE is a registered trademark of Google Inc.)

SUMMARY

Provided are a computer program product for generating suggestions foran input string. A determination is made of strings in a user selecteddata source having at least a substring matching an input string, from acomputer implemented user interface, comprising at least one characterfor use by a computer implemented process. The determined strings areprovided to the user interface and selection is received of one of thedetermined strings from the user interface to provide to the computerimplemented process.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a computing environment in which embodiments areimplemented.

FIG. 2 illustrates an embodiment of user search settings.

FIG. 3 illustrates an embodiment of operations to process a user requestto update data sources for search suggestions.

FIG. 4 illustrates an embodiment of a search suggestion data sourceconfiguration user interface.

FIG. 5 illustrates an embodiment of operations to process a user replyto the transmitted search suggestion data source configuration.

FIG. 6 illustrates an embodiment of operations to process a search inputstring entered in a user interface.

FIG. 7 illustrates an embodiment of a search page.

FIG. 8 illustrates an embodiment of a computer system in whichembodiments may be implemented.

DETAILED DESCRIPTION

Described embodiments provide techniques to offer suggestions for aninput string entered by a user for the user to select to use with acomputer implemented process, such as a search engine. As the userinters a search string, the string or substring the user entered isprocessed to determine strings in a user selected data source having atleast a substring matching the input string. The determined strings fromthe user selected data source, such as a database, document, list, etc.,are provided to the user interface for the user to select one of thedetermined strings. The determined string the user selects is thenprovided to the computer implemented process to use, such as to executea search request for which the input string was being entered.

FIG. 1 illustrates a network computing environment having a plurality ofuser systems or clients 2 that may submit queries over a network 4 to asearch server 6 to search network accessible systems for objects thatsatisfy the search query predicates. The server 6 includes a searchengine 8 to receive, execute, and return results for user 2 searchqueries. The search engine 8 maintains a search index 10 used todetermine objects that satisfy the search request. The search index 10may provide an association of strings, comprising characters andnumbers, to the documents, where the strings associated with an objectmay comprise content in the object. In one embodiment, the search index10 may comprise a plurality of posting lists that include documentidentifiers, such as a network address or document identifier, e.g.,Uniform Resource Locator (URL), docID, etc., of documents that includethe term, i.e., word, number, etc., associated with that posting list14. The term(s) associated with a posting list may comprise a word orcombination of words on which users search. The search engine 8 mayinclude a crawler to collect documents from the network and an indexerto extract the searchable terms, including numeric words and values,from the documents and builds posting lists.

The search server 6 may further maintain user information 20 includinginformation on users, such as user selected data sources 12 a, 12 b,that may be used to provide search suggestions of search terms toprovide as the user types in characters in a search box to allow theautocomplete based on characters the user enters in a search box. Thedata sources 12 a, 12 b used to provide search suggestions may include adata source 12 a in a storage 14 a coupled to the network 4 or a datasource 12 b in a storage 14 b coupled to or included in the user system2. The data sources 12 a, 12 b that may be searched for searchsuggestions to auto complete a user entered search string may comprise adatabase, where the suggestions are determined through a StructuredQuery Language (SQL) query of the data source 12 a, 12 b, a wordprocessing file, a spreadsheet, a text file, etc. In this way, searchsuggestions may comprise strings from data sources 12 a, 12 b specifiedby a user to the search engine 8.

The user system 2 may comprise any computing device capable ofsubmitting queries, i.e., search requests, to the server 6, includingdesktop computers, notebook computers, workstations, hand heldcomputers, servers, mainframes, telephony devices, etc. The user systems2 may include a user interface 16, such as a browser program e.g., as aHypertext Markup Language (HTML) web browser, capable of requesting andaccessing documents at network accessible systems and submitting searchrequests to the server 6. The network 4 may comprise one or morenetworks known in the art, such as a Wide Area Network (WAN), Local AreaNetwork (LAN), Storage Area Network (SAN), wireless network, theInternet, and Intranet, etc. The server 6 may comprise one or morecomputational machines, such as one or more servers, suitable forhandling search requests from the user systems 2. The number of serversused for the server 6 depends on the anticipated network traffic fromuser systems 2.

The systems on the network 4 having documents that may be indexed in thesearch index 10 may comprises any computational device or storage systemcapable of storing documents and making such documents available to theuser systems 2 and server 6 over the network 4. The network accessiblesystems includes a program to respond to document requests from the usersystems 2 and server 6 over the network 4, such as a Hypertext TransferProtocol (HTTP), File Transfer Protocol (FTP), Network File System(NFS), etc.

The documents that the user interface 16 may search and that are indexedin the search index 10 available over the network 4, may be implementedin different computer readable formats, e.g., text, HTML, images, video,sound, Portable Document Format (PDF), and include searchable text orsearchable metadata that the server 6 may access to index in the searchindex 10.

In one embodiment, the documents that the search server 6 may return ina list of search results may comprise documents available over theInternet in public networks. In an alternative private Intranet, thedocuments that the search sever 6 may return may comprise documentslocated in systems in a private Intranet accessible only to authorizedusers.

FIG. 2 illustrates an embodiment of an instance of user search settings200 _(i) for one user included in the user information 200, having auser identifier 202, and zero or more instances j of data sourceinformation. Each instance j of data source information may include adata source 204 _(j), such as a database or file having information; adata source location 206 _(j) comprising a location of the data source204 _(j), such as a network address and other information to access thedata source; a search field 208 _(j) indicating a field, column,attribute, etc., in the data source 204 _(j) to search for searchsuggestions based on a user input string, which may be just thebeginning of a word the user is typing; one or more related information210 _(j) fields indicating related information in the data source 204_(j) or some other location to include when providing the userinformation on the data source 204 _(j); and a data source selected 212_(j) field indicating whether the user has selected to use the datasource 204 _(j) for search suggestions.

The related information 28 _(j) may indicate a field in the data source24 _(j) associated with the search field 208 _(j) whose value isrendered when rendering search suggestions from the search field 208_(i) to assist the user in selecting the appropriate search suggestionto use for the search.

FIG. 3 illustrates an embodiment of operations performed by the searchengine 8 to process a user request to update the data sources 12 a, 12 bfor search suggestions. Upon receiving (at block 300) a user request toupdate the data sources for search suggestions, the search engine 8determines (at block 302) the data sources 204 _(j) indicated in theuser information 200 _(j) for the requesting user 202 and generates (atblock 304) a user selectable list indicating the determined data sources204 _(j). Previously the user may have entered data source informationfor the user search settings 200 _(i), including 206 _(j), 208 _(j), 210_(j), and 212 _(j). The search engine 8 further generates (at block 306)for each data source 204 _(j) a check box or other indicator in whichthe user may indicate to use the data source 204 _(j) for searchsuggestions. The check box is set (at block 308) to indicate selectedfor each data source 204 _(j) whose data source selected 212 _(j)information indicates the data source 204 _(j) was selected to use forsearch suggestions. The data source configuration list is thentransmitted (at block 310) to the user computer 2 to render in the userinterface 16 as part of a data source configuration page in which theuser can manage their data sources.

FIG. 4 illustrates an embodiment of the generated data sourceconfiguration interface panel 400 including an enable search suggestionbox 402 in which the user may indicate whether user selected datasources should be considered for search suggestions. The page 400further includes the user selectable list of data sources 404 ₁, 404 ₂,404 ₃, along with the corresponding check boxes 406 ₁, 406 ₂, 406 ₃,which the user may select to indicate whether the corresponding datasource is used to provide search suggestions.

The configuration page 400 further includes a configure tab 408 whichthe user selects to provide specific configurations for a data source404 ₁, 404 ₂, 404 ₃, including the data source location 206 _(j), searchfield 208 _(j), and related information field(s) 210 _(j); an add tab410 in which the user may add data sources 202 j; and a delete tab 412to enable the user to delete data sources 202 _(j).

FIG. 5 illustrates an embodiment of operations performed by the searchengine 8 to process a reply to the data source configuration page 400including user selections of data sources in the check boxes 406 ₁, 406₂, 406 ₃. Upon receiving (at block 500) a reply including the returneddata source configuration page 400, including indication of data sources404 ₁, 404 ₂, 404 ₃ in the data source configuration page 400 that areselected or unselected, the search engine 8 updates (at block 502) thedata source selected 212 _(j) field to indicate that the data source 204_(j) is not selected for each data source 404 ₁, 404 ₂, 404 ₃ in thereply indicated as unselected, e.g., the check box 406 ₁, 406 ₂, 406 ₃is unselected. For each data source 404 ₁, 404 ₂, 404 ₃ in the replypage 400 indicated as selected, e.g., the check box 406 ₁, 406 ₂, 406 ₃is selected or marked, the search engine 8 updates (at block 504) thedata source selected 212 _(j) field to indicate that the data source 204_(j) is selected.

FIG. 6 illustrates an embodiment of operations performed by the searchengine 8 to process a search input string from a search box from a user.The operation of FIG. 6 may be performed whenever the user enters orremoves a character, letter, number or special character, from a searchinput box rendered in the user interface 16. The user interface 16 maytransmit any change to the string being entered in the search input boxto the search engine 8 to process. Upon receiving (at block 600) asearch input string, which may comprise one or more characters, thesearch engine 8 determines (at block 602) whether the user information200, for the user i indicated data sources 204 _(j) are selected forsearch suggestions. If (at block 602) there are no selected datasources, then the search engine 8 may determine (at block 604) searchsuggestions by determining popular recent searches having the searchinput string from other users or in the user's search history, andgenerates (at block 606) a selectable list of the determined searchsuggestions to render under the search box in the user interface 16.

If (at block 602) there are selected data sources 204 _(j), then thesearch engine 8 determines (at block 608) the user selected data sources204 _(j), i.e., those whose data source selected field 212 _(j)indicates that the data source 204 _(j) is selected. The user selecteddata sources 204 _(j) are searched (at block 610) to determine items orfields matching the search input string. A match may occur if a stem orsubstring of a value in the search field 208 j matches the search inputstring. If (at block 612) there are no matches, control ends. Otherwise,if there are matching strings in the search field 212 _(j) of the userselected data sources 204 _(j) a determination is made (at block 614)whether a related information field 210 _(j) indicates relatedinformation to be rendered with the search suggestions. If (at block614) there is no related information to be rendered, then the searchengine 8 generates (at block 616) a user selectable list of thedetermined strings matching the search input string. If (at block 614)there is related information to be provided, then the search engine 8searches (at block 618) the data source(s) 204 _(j) to determine therelated information in the related information fields 210 for each ofthe determined strings, which may dynamically change. The search engine8 generates (at block 620) a user selectable list of the determinedstrings matching (in whole or part) the search input string with thedetermined related information for the determined strings. Aftergenerating the user selectable list at blocks 606, 616, and 620, thesearch engine 8 transmits (at block 622) the generated user selectablelist to the user computer 2 to render the user selectable list and anyrelated information under the search input box displayed in the userinterface 16.

FIG. 7 illustrates an embodiment of a search page 700 including a searchinput box 702 in which the user enters a search string, shown as “Pr” byway of example. The search page 700 further renders the user selectablelist 704 transmitted by the search engine 8 according to the operationsof FIG. 6, which provides a list of determined search suggestions 706,(e.g., names of Products matching the currently entered search string,e.g., “Pr”, in the search input box 702), the check boxes 708 enablingthe user to select a search suggestion and the related information 710for the search suggestions. Selecting one or more of the displayedsearch suggestions 706 causes the selected search suggestions to beincluded in the search input box 702, e.g., auto-completed. The user maysubmit the search suggestions added to the search input box 702 to thesearch engine 8 to search by selecting a search entry button 712.

In the example of FIG. 7, the search suggestions 706 comprise productnames from a data source and the related information 710 shows the salesfor the product, which the user may consider when selecting a searchsuggestion. In alternative embodiment, the determined search stringsfrom the data source and related information may comprise any type orcategory of data.

Upon receiving a selected search suggestion, the search engine 8 maysearch the search index 10 to determine documents including contentmatching the search suggestion and then build a search result pageindicating network addresses of the matching documents to return theuser interface 16.

In the above described embodiments, the search suggestions from userselected data sources were provided in response to a user enteringcharacters for a search string to submit to a search engine to use in aquery against a database, such as a document index. However, thedescribed embodiments for providing suggestions from user selected datasources may be provided in response to user input strings entered forcomputer implemented processes other than a search operation of adatabase. For instance, the user input string may be entered in text ina word processing document, a text message, email message, and thesuggestions may be provided to allow the user to auto-complete a stringbased on entry of a few characters.

Described embodiments provide techniques to provide search suggestionsfor a user entered input string by searching one or more user selecteddata sources for suggestions to provide to complete the string enteredby the user. The described embodiments may further provide relatedinformation associated with the strings in the data sources to providewith the suggestions to assist the user in selecting a suggestion.

The described operations may be implemented as a method, apparatus orcomputer program product using standard programming and/or engineeringtechniques to produce software, firmware, hardware, or any combinationthereof. Accordingly, aspects of the embodiments may take the form of anentirely hardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.) or an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.” Furthermore,aspects of the embodiments may take the form of a computer programproduct embodied in one or more computer readable medium(s) havingcomputer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described above with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The terms “an embodiment”, “embodiment”, “embodiments”, “theembodiment”, “the embodiments”, “one or more embodiments”, “someembodiments”, and “one embodiment” mean “one or more (but not all)embodiments of the present invention(s)” unless expressly specifiedotherwise.

The terms “including”, “comprising”, “having” and variations thereofmean “including but not limited to”, unless expressly specifiedotherwise.

The enumerated listing of items does not imply that any or all of theitems are mutually exclusive, unless expressly specified otherwise.

The terms “a”, “an” and “the” mean “one or more”, unless expresslyspecified otherwise.

Devices that are in communication with each other need not be incontinuous communication with each other, unless expressly specifiedotherwise. In addition, devices that are in communication with eachother may communicate directly or indirectly through one or moreintermediaries.

A description of an embodiment with several components in communicationwith each other does not imply that all such components are required. Onthe contrary a variety of optional components are described toillustrate the wide variety of possible embodiments of the presentinvention.

Further, although process steps, method steps, algorithms or the likemay be described in a sequential order, such processes, methods andalgorithms may be configured to work in alternate orders. In otherwords, any sequence or order of steps that may be described does notnecessarily indicate a requirement that the steps be performed in thatorder. The steps of processes described herein may be performed in anyorder practical. Further, some steps may be performed simultaneously.

When a single device or article is described herein, it will be readilyapparent that more than one device/article (whether or not theycooperate) may be used in place of a single device/article. Similarly,where more than one device or article is described herein (whether ornot they cooperate), it will be readily apparent that a singledevice/article may be used in place of the more than one device orarticle or a different number of devices/articles may be used instead ofthe shown number of devices or programs. The functionality and/or thefeatures of a device may be alternatively embodied by one or more otherdevices which are not explicitly described as having suchfunctionality/features. Thus, other embodiments of the present inventionneed not include the device itself.

The illustrated operations of the figures show certain events occurringin a certain order. In alternative embodiments, certain operations maybe performed in a different order, modified or removed. Moreover, stepsmay be added to the above described logic and still conform to thedescribed embodiments. Further, operations described herein may occursequentially or certain operations may be processed in parallel. Yetfurther, operations may be performed by a single processing unit or bydistributed processing units.

The search server 6, user system 2, and storage 14 a, 14 b, and theelements of the social network computing environment of FIG. 1,including the search engine 8, search index 10, user information 200,and the user interface 16, may be implemented in one or more computersystems, such as the computer system 802 shown in FIG. 8. If thecomponents of the network computing environment of FIG. 1 areimplemented in multiple systems, then the systems may communicate overthe network 4. Computer system/server 802 may be described in thegeneral context of computer system executable instructions, such asprogram modules, being executed by a computer system. Generally, programmodules may include routines, programs, objects, components, logic, datastructures, and so on that perform particular tasks or implementparticular abstract data types. Computer system/server 802 may bepracticed in distributed cloud computing environments where tasks areperformed by remote processing devices that are linked through acommunications network. In a distributed cloud computing environment,program modules may be located in both local and remote computer systemstorage media including memory storage devices.

As shown in FIG. 8, the computer system/server 802 is shown in the formof a general-purpose computing device. The components of computersystem/server 802 may include, but are not limited to, one or moreprocessors or processing units 804, a system memory 806, and a bus 808that couples various system components including system memory 806 toprocessor 804. Bus 808 represents one or more of any of several types ofbus structures, including a memory bus or memory controller, aperipheral bus, an accelerated graphics port, and a processor or localbus using any of a variety of bus architectures. By way of example, andnot limitation, such architectures include Industry StandardArchitecture (ISA) bus, Micro Channel Architecture (MCA) bus, EnhancedISA (EISA) bus, Video Electronics Standards Association (VESA) localbus, and Peripheral Component Interconnects (PCI) bus.

Computer system/server 802 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 802, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 806 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 810 and/or cachememory 812. Computer system/server 802 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 813 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 808 by one or more datamedia interfaces. As will be further depicted and described below,memory 806 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 814, having a set (at least one) of program modules 816,may be stored in memory 806 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. The components of the computer 2 may be implemented asprogram modules 816 which generally carry out the functions and/ormethodologies of embodiments of the invention as described herein. Thecomponents 12, 14, 16, and 18 of the content analytics system 2 may beimplemented in one or more computer systems 802, where if they areimplemented in multiple computer systems 802, then the computer systemsmay communicate over a network.

Computer system/server 802 may also communicate with one or moreexternal devices 818 such as a keyboard, a pointing device, a display820, etc.; one or more devices that enable a user to interact withcomputer system/server 12; and/or any devices (e.g., network card,modem, etc.) that enable computer system/server 802 to communicate withone or more other computing devices. Such communication can occur viaInput/Output (I/O) interfaces 822. Still yet, computer system/server 802can communicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 824. As depicted, network adapter 824communicates with the other components of computer system/server 802 viabus 808. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 802. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The foregoing description of various embodiments of the invention hasbeen presented for the purposes of illustration and description. It isnot intended to be exhaustive or to limit the invention to the preciseform disclosed. Many modifications and variations are possible in lightof the above teaching. It is intended that the scope of the invention belimited not by this detailed description, but rather by the claimsappended hereto. The above specification, examples and data provide acomplete description of the manufacture and use of the composition ofthe invention. Since many embodiments of the invention can be madewithout departing from the spirit and scope of the invention, theinvention resides in the claims herein after appended.

1-16. (canceled)
 17. A method for generating suggestions for an inputstring entered into a computer user interface, comprising: determiningstrings in a user selected data source having at least a substringmatching an input string, from a computer implemented user interface,comprising at least one character for use by a computer implementedprocess; providing the determined strings to the user interface; andreceiving selection of one of the determined strings from the userinterface to provide to the computer implemented process.
 18. The methodof claim 17, wherein the providing the determined strings comprisesproviding a list of the determined strings having including relatedinformation for at least one of the determined strings, wherein theselected one of the determined strings is selected from the generatedlist.
 19. The method of claim 17, wherein the user selected data sourcecomprises a database, wherein the determined strings comprise data in afield in the entries of the database, wherein the related information isassociated with the fields having the determined strings in thedatabase, and wherein the determining the strings comprises a query ofthe database to search the field for entries having strings matching thereceived input string.
 20. The method of claim 17, further comprising:determining the user selected data source from user information for auser from which the received input string was received; accessing theuser selected data source from a location for the user data sourceindicated in the user information; and searching the accessed userselected data source for the determined strings including the receivedsearch input.
 21. The method of claim 17, further comprising: storinginformation from a user on at least one data source from which searchsuggestions are determined in user information for the user; generatinga list including the at least one data source indicated in the userinformation for the user; receiving user selection of one of the atleast one data source indicated in the list; and indicating in the userinformation each user selected data source as selected to use forsuggestions for the received input string.
 22. The method of claim 17,wherein the providing the determined strings comprises providing a listof the determined strings adjacent to a text box in which the inputstring is entered, wherein the selected one of the determined strings isselected from the generated list.
 23. The method of claim 22, whereinthe related information for the determined strings dynamically changes,wherein the related information is obtained by querying a database forthe related information associated with the determined strings.
 24. Themethod of claim 17, wherein the determined strings have a substring at abeginning of the string matching the received input string.
 25. Themethod of claim 17, wherein the determining the strings comprisesdetermining strings from a plurality of user selected data sourceshaving at least a substring matching the received input string.
 26. Themethod of claim 25, wherein the data sources comprise at least one ofdifferent databases, different fields within one database, a list ofterms, a spreadsheet, and a document.
 27. The method product of claim17, wherein the computer implemented process comprises a search engine,wherein the input string is entered to provide search terms to thesearch engine to perform a search of documents in network devicesincluding the input string being entered, wherein the provideddetermined strings are to provide search suggestions, furthercomprising: using, by the search engine, the selected string in a searchoperation to find documents in network devices including the selectedstring.